/************************************************************************
                        Triangulizer.h - Copyright Claudio Botta

This library is free software; you can redistribute it and/or modify it 
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or 
(at your option) any later version.
This library is distributed in the hope that it will be useful, but 
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
License for more details.

You should have received a copy of the GNU Lesser General Public License 
along with this library; if not, write to the 
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 
Boston, MA 02110, USA

This file was generated on Sat Mar 15 2008 at 10:58:11
The original location of this file is geomagick/Triangulizer.h
**************************************************************************/


#ifndef TRIANGLULIZER_H
#define TRIANGULIZER_H

#include <string>
#include <vector>
#include <deque>
#include "Conversion.h"
#include "BaseTypes/Polygons.h"
#include "BaseTypes/Triangles.h"
#include "geomagickGlobal.h"
#include <boost/foreach.hpp>


using namespace std;

namespace geomagick{

/**
  * \class Triangulizer
  * \brief Offers a Conversion from Polygons to Triangles
  */

class Triangulizer : public Conversion
{
public:

  // Constructors/Destructors
  //  


  // Static Public attributes
  //  

  // Public attributes
  //  


  // Public attribute accessor methods
  //  


  // Public attribute accessor methods
  //  


protected:

  // Static Protected attributes
  //  

  // Protected attributes
  //  

public:


  // Protected attribute accessor methods
  //  

protected:

public:


  // Protected attribute accessor methods
  //  

protected:


private:

  // Static Private attributes
  //  

  // Private attributes
  //  



public:

  // Private attribute accessor methods
  //  

private:

public:


  // Private attribute accessor methods
  //  

virtual void test()
 {
	cout << "Triangulizer \n";
}

  virtual Triangles* process(Polygons*);
  virtual BaseType* process(BaseType* in){
	return this->process((Polygons*) in);
	}

  /**
   * Set the value of m_Source
   * @param new_var the new value of m_Source
   */
  void setSource ( BaseType* new_var );

  /**
   * Get the value of Source
   * @return the value of Source
   */
  BaseType* getSource ( );


  /**
   * Set the value of Target
   * @param new_Target the new value of Target
   */
  void setTarget ( BaseType* new_Target );

  /**
   * Get the value of m_Target
   * @return the value of m_Target
   */
  BaseType* getTarget ( );


  /**
   * Set the value of m_convert_ptr
   * @param new_var the new value of m_convert_ptr
   */
  void setConvert_ptr ( void*  new_var );

   static Conversion* init(){return (new Triangulizer);}
   static string getConversionName(){return "Triangulizer";}
   static int getEdgeWeight(){return 1;}
   static ConversionId* getTypeId(){ConversionId* newConversionId = new ConversionId; 
					newConversionId->getSourceId = Polygons::getTypeId;
					newConversionId->getTargetId = Triangles::getTypeId;
					newConversionId->getEdgeWeight = Triangulizer::getEdgeWeight;
					newConversionId->getConversionName = Triangulizer::getConversionName;
					newConversionId->init = Triangulizer::init; 
					return newConversionId;}

private:

};
}
#endif // TRIANGLULIZER_H
